#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
多线程功能验证脚本
快速验证多线程代码的正确性，不进行实际的音频处理
"""

import sys
import os
sys.path.append('scripts')

def validate_multithread_functions():
    """验证多线程相关的函数是否正确定义"""

    print("🔍 验证多线程功能...")

    try:
        # 导入脚本
        import enhanced_transcribe as et
        print("✅ 成功导入 enhanced_transcribe 模块")

        # 检查函数是否存在
        functions_to_check = [
            '_worker_transcribe_segment',
            'transcribe_segments_with_funasr_multithread',
            'transcribe_segments_with_funasr',
            'enhanced_transcribe_audio'
        ]

        for func_name in functions_to_check:
            if hasattr(et, func_name):
                print(f"✅ 函数 {func_name} 存在")
            else:
                print(f"❌ 函数 {func_name} 不存在")
                return False

        # 检查导入的模块
        required_modules = ['threading', 'concurrent.futures']
        for module_name in required_modules:
            if hasattr(sys.modules.get(module_name), '__name__'):
                print(f"✅ 模块 {module_name} 已导入")
            else:
                print(f"⚠️ 模块 {module_name} 可能未正确导入")

        # 测试多线程函数调用（模拟数据）
        print("\n🧪 测试多线程函数调用...")

        # 创建模拟的音频段数据
        mock_segments = [(0.0, 2.0), (2.5, 4.5), (5.0, 7.0)]

        # 测试函数签名
        try:
            # 这应该不会实际处理，只是检查函数是否能正确调用
            import inspect
            sig = inspect.signature(et.transcribe_segments_with_funasr_multithread)
            print(f"✅ 多线程函数签名: {sig}")

            sig2 = inspect.signature(et._worker_transcribe_segment)
            print(f"✅ 工作线程函数签名: {sig2}")

        except Exception as e:
            print(f"❌ 函数签名检查失败: {e}")
            return False

        print("\n✅ 多线程功能验证通过!")
        return True

    except ImportError as e:
        print(f"❌ 导入失败: {e}")
        return False
    except Exception as e:
        print(f"❌ 验证过程中出错: {e}")
        return False

def validate_cli_arguments():
    """验证命令行参数"""
    print("\n🔍 验证命令行参数...")

    # 检查脚本文件是否存在
    script_path = "scripts/enhanced_transcribe.py"
    if os.path.exists(script_path):
        print(f"✅ 脚本文件存在: {script_path}")

        # 读取脚本内容，检查是否包含多线程相关代码
        with open(script_path, 'r', encoding='utf-8') as f:
            content = f.read()

        if '--single-thread' in content:
            print("✅ 命令行参数 --single-thread 已添加")
        else:
            print("❌ 命令行参数 --single-thread 未找到")
            return False

        if 'concurrent.futures' in content:
            print("✅ 多线程模块 concurrent.futures 已导入")
        else:
            print("❌ 多线程模块 concurrent.futures 未找到")
            return False

        if 'ThreadPoolExecutor' in content:
            print("✅ ThreadPoolExecutor 已使用")
        else:
            print("❌ ThreadPoolExecutor 未找到")
            return False

        return True
    else:
        print(f"❌ 脚本文件不存在: {script_path}")
        return False

if __name__ == "__main__":
    print("=" * 60)
    print("🧪 多线程增强转录系统验证")
    print("=" * 60)

    success = True

    # 验证命令行参数
    if not validate_cli_arguments():
        success = False

    # 验证多线程功能
    if not validate_multithread_functions():
        success = False

    print("\n" + "=" * 60)
    if success:
        print("✅ 所有验证通过! 多线程功能已正确实现。")
        print("\n📋 使用方法:")
        print("  多线程模式（默认）:")
        print("    python scripts/enhanced_transcribe.py input.mp4")
        print("  单线程模式:")
        print("    python scripts/enhanced_transcribe.py input.mp4 --single-thread")
    else:
        print("❌ 验证失败，请检查代码实现。")
        sys.exit(1)